@echo off
REM IndexTTS2 自动化部署脚本
REM 需要以管理员身份运行

title IndexTTS2 自动化部署

echo ========================================
echo       IndexTTS2 自动化部署脚本
echo ========================================
echo.

REM 检查管理员权限
net session >nul 2>&1
if %errorLevel% == 0 (
    echo ✅ 管理员权限确认
) else (
    echo ❌ 请以管理员身份运行此脚本
    pause
    exit /b 1
)

echo 📍 当前目录: %CD%
echo.

REM Step 1: 检查Python
echo [1/8] 检查Python环境...
python --version >nul 2>&1
if %errorLevel% == 0 (
    echo ✅ Python已安装
    python --version
) else (
    echo ❌ Python未安装，请先安装Python 3.10+
    echo 下载地址: https://www.python.org/downloads/
    pause
    exit /b 1
)
echo.

REM Step 2: 创建虚拟环境
echo [2/8] 创建Python虚拟环境...
if exist ".venv" (
    echo ✅ 虚拟环境已存在
) else (
    echo 正在创建虚拟环境...
    python -m venv .venv
    if %errorLevel% == 0 (
        echo ✅ 虚拟环境创建成功
    ) else (
        echo ❌ 虚拟环境创建失败
        pause
        exit /b 1
    )
)
echo.

REM Step 3: 激活虚拟环境
echo [3/8] 激活虚拟环境...
call .venv\Scripts\activate.bat
if %errorLevel% == 0 (
    echo ✅ 虚拟环境激活成功
) else (
    echo ❌ 虚拟环境激活失败
    pause
    exit /b 1
)
echo.

REM Step 4: 升级pip
echo [4/8] 升级pip...
python -m pip install --upgrade pip
echo ✅ pip升级完成
echo.

REM Step 5: 安装PyTorch
echo [5/8] 安装PyTorch (CUDA版本)...
echo 正在检测CUDA...
nvidia-smi >nul 2>&1
if %errorLevel% == 0 (
    echo ✅ 检测到NVIDIA GPU，安装CUDA版本
    pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
) else (
    echo ⚠️  未检测到NVIDIA GPU，安装CPU版本
    pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
)
echo.

REM Step 6: 安装依赖包
echo [6/8] 安装项目依赖...
if exist "deploy_requirements.txt" (
    pip install -r deploy_requirements.txt
    echo ✅ 依赖安装完成
) else (
    echo ⚠️  deploy_requirements.txt不存在，尝试安装基础依赖
    pip install gradio fastapi uvicorn pywin32 psutil
)
echo.

REM Step 7: 检查模型文件
echo [7/8] 检查模型文件...
if exist "checkpoints\config.yaml" (
    echo ✅ config.yaml 存在
) else (
    echo ❌ config.yaml 不存在
)

if exist "checkpoints\gpt.pth" (
    echo ✅ gpt.pth 存在
) else (
    echo ❌ gpt.pth 不存在
)

if exist "checkpoints\s2mel.pth" (
    echo ✅ s2mel.pth 存在  
) else (
    echo ❌ s2mel.pth 不存在
)

if exist "checkpoints\bpe.model" (
    echo ✅ bpe.model 存在
) else (
    echo ❌ bpe.model 不存在
)
echo.

REM Step 8: 安装Windows服务
echo [8/8] 安装Windows服务...
if exist "windows_service.py" (
    python windows_service.py install
    if %errorLevel% == 0 (
        echo ✅ Windows服务安装成功
        echo.
        echo 🎉 部署完成！
        echo.
        echo 📋 接下来可以使用以下命令：
        echo    启动服务: net start IndexTTSService
        echo    停止服务: net stop IndexTTSService  
        echo    访问地址: http://127.0.0.1:7863
        echo.
        
        REM 询问是否启动服务
        set /p start_service="是否现在启动服务？(Y/N): "
        if /I "%start_service%"=="Y" (
            python windows_service.py start
            echo ✅ 服务启动成功！
            echo 📱 请在浏览器访问: http://127.0.0.1:7863
        )
    ) else (
        echo ❌ Windows服务安装失败
    )
) else (
    echo ❌ windows_service.py 文件不存在
)

echo.
echo ========================================
echo               部署完成
echo ========================================
pause
